package com.行为型模型.T迭代器模式;

/**
 * 1，优点：
 * 	它支持以不同的方式遍历一个聚合对象，在同一个聚合对象上可以定义多种遍历方式。在迭代器模 式中只需要用一个不同的迭代器来替换原有迭代器即可改变遍历算法，我们也可以自己定义迭代器的子类以支持新的遍历方式。
 * 	迭代器简化了聚合类。由于引入了迭代器，在原有的聚合对象中不需要再自行提供数据遍历等方 法，这样可以简化聚合类的设计。
 * 	在迭代器模式中，由于引入了抽象层，增加新的聚合类和迭代器类都很方便，无须修改原有代码， 满足 “开闭原则” 的要求。
 * 2，缺点：
 * 	增加了类的个数，这在一定程度上增加了系统的复杂性。
 * 使用场景
 * 	当需要为聚合对象提供多种遍历方式时。 当需要为遍历不同的聚合结构提供一个统一的接口时。 当访问一个聚合对象的内容而无须暴露其内部细节的表示时
 */
public class Test {
    public static void main(String[] args) {
        StudentAggregateImpl studentAggregate=new StudentAggregateImpl();
        Student student1=new Student("张三","001");
        Student student2=new Student("李四","002");
        Student student3=new Student("王五","003");
        studentAggregate.addStudent(student1);
        studentAggregate.addStudent(student2);
        studentAggregate.addStudent(student3);

        StudentIterator studentIterator = studentAggregate.getStudentIterator();
        while (studentIterator.hasNext()){
            System.out.println(studentIterator.next());
        }


    }
}
